package com.etime.yqtsponsor.service.impl;

import com.etime.yqtsponsor.dao.*;
import com.etime.yqtsponsor.pojo.*;
import com.etime.yqtsponsor.pojo.ActiveTheme;
import com.etime.yqtsponsor.service.ActiveThemeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.*;

/**
 * Created with IntelliJ IDEA.
 *
 * @author: LouisLew
 * @date: 2022/07/19/16:29
 * @description: 活动信息的service层实现类
 */
@Service
public class ActiveThemeServiceImpl implements ActiveThemeService {

    @Autowired
    private ActiveThemeMapper activeThemeMapper;

    /**
     * 删除活动
     * @param activeId
     * @return
     */
    @Override
    public int deleteActive(Integer activeId) {
        return activeThemeMapper.updateDeletedById(activeId);
    }


    /**
     * 根据主键查找活动
     * @param id
     * @return
     */
    @Override
    public ActiveTheme selectById(Integer id){
        return activeThemeMapper.selectById(id);
    }
    @Autowired
    private ActivePicBankMapper activePicBankMapper;
    @Autowired
    private QuestionsMapper questionsMapper;
    @Autowired
    private CreateActiveVoteMapper createActiveVoteMapper;
    @Autowired
    private CreateSurveyItemMapper createSurveyItemMapper;
    @Autowired
    private FindHistoryQuestionMapper findHistoryQuestionMapper;
    @Autowired
    private ActiveVoteFormMapper activeVoteFormMapper;

    //定义ActiveBannerPic的id数组
    public String[] picList;


    @Override
    public int addActiveTheme(ActiveTheme activeTheme, ActivePicBank activePicBank ,Questions questions,SurveyItem surveyItem) {

        /**
         * 先添加图片 拿到图片的id放到theme表里完成字段判断后
         * 拿到theme的id 放到survey_item里
         * 并且添加问题拿到问题的id同时添加到survey_item
         * 对各个表里进行字段判断
         *
         * 先添加图片 拿到图片的id 设置给theme
         * 问卷，表单，投票 主办方创建活动的总接口
         * banner id showpic id open设置 密码设置
         * 隐藏？
         * createuserid ？
         *审核状态 通过鉴黄鉴暴后变为已审核 （未实现）
         * 排序？
         */
        int saveActivePicBank = activePicBankMapper.insert(activePicBank);
        if (saveActivePicBank < 1) {
            throw new RuntimeException("插入错误");
        } else {
            //缩略图id插入
            if (activePicBank.getType().equals("ActiveShowPic")){
                int showPicId = activePicBank.getId();
                activeTheme.setShowPicId(showPicId);
            }
            //banner图id插入
            if (activePicBank.getType().equals("ActiveBannerPic")) {
//                if (picList==null){
//                    String showPicId = String.valueOf(activePicBank.getId());
//                    picList=new String[1];//若数组为空，定义数组的长度为1
//                    picList[0]=showPicId;
//                    activeTheme.setBannerPicIds(showPicId);
//                }else {
//                    //若数组不为空，把数组复制出一个新的，在原数组的基础上加1
//                    String[] copy = Arrays.copyOf(picList,picList.length+1);
//                    //把原先数组制空
//                    picList=null;
//                    //把新数组给原先这个数组
//                    picList=copy;
//                    String showPicId = String.valueOf(activePicBank.getId());
//                    picList[picList.length - 1]=showPicId;
//                    activeTheme.setBannerPicIds("showPicId");
//                }

                ArrayList<String> ar = new ArrayList<>();
                String showPicId = String.valueOf(activePicBank.getId());
                if (showPicId!=null){
                    ar.add(showPicId);
                }
            }
            //是否开放问卷和设置密码
            if (activeTheme.getOpen().equals("公开")) {
                activeTheme.setOpen(1);
                activeTheme.setPwd("");
            }
            if (activeTheme.getOpen().equals("不公开")) {
                String pwd = activeTheme.getPwd();
                activeTheme.setOpen(0);
                activeTheme.setPwd(pwd);
            }
            //隐藏？
            //createuserid ？
            //是否发布
            if (activeTheme.getPublished().equals("是")){
                activeTheme.setPublished(1);
            }else {
                activeTheme.setPublished(0);
            }
            //审核状态 通过鉴黄鉴暴后变为已审核 （未实现）
            activeTheme.setPass(0);//待审核

            //创建时间
            int CreateTime = (int) (System.currentTimeMillis()/1000);
            activeTheme.setCreatedTime(CreateTime);
            int theme = activeThemeMapper.insert(activeTheme);
            //拿到theme的id
            int themeid = activeTheme.getId();

            //问题表
            questions.setCreatedTime(CreateTime);
            questions.setUpdatedTime(CreateTime);
            questionsMapper.insert(questions);
            //拿到问题的id
            int questionsId = questions.getId();

            //设置survey_item的创建时间
            surveyItem.setCreatedTime(CreateTime);
            //第一次更新时间即创建时间
            surveyItem.setUpdatedTime(CreateTime);

            //survey_item 表
            //放入question id
            surveyItem.setQuestionId(questionsId);
            //放入theme id
            surveyItem.setThemeId(themeid);
            int survey = createSurveyItemMapper.insert(surveyItem);
            //排序？
            return survey;
        }
    }


    /**
     * 添加调查问卷和表单问题
     * survey_item表 问题id survey_answer 问题答案
     *
     */


    /**
     * 投票活动主办方创建后，选手进行上传视频或者图片进行参与投票
     * 更新时间 createTime 设置为当前时间戳
     * 审核状态Status 设置为0（未审核状态）
     */
    @Override
    public int addActiveVoteRegister(VoteRegister voteRegister) {
//        int activeVote = createActiveVoteMapper.createActiveVote(createVoteRegisterDto);
        // 创建时间为当前时间戳
        int CreateTime = (int) System.currentTimeMillis();

        voteRegister.setCreatedTime(CreateTime);

            //审核状态设置为未审核
            voteRegister.setStatus(0);
//        if (voteRegister.getCreatedTime() == null) {
//            // 创建时间为当前时间戳
//            int CreateTime = (int) new Date().getTime();
//            voteRegister.setCreatedTime(CreateTime);
//        }
         return createActiveVoteMapper.insert(voteRegister);
    }

    /**
     * 如果活动类型是问卷或者表单 则可以查看历史题目
     * 1.更快创建者的id去找其创建过的题目
     * 2.如果修改了历史题目的内容 则会重新插入（判断条件 更新时间是否改变）
     * @param creatorId
     * @return
     */
    @Override
    public List<Questions> findHistoryQuestionById(int creatorId) {
        return findHistoryQuestionMapper.findHistoryQuestionById(creatorId);
    }


    /**
     * 前端主办方可以主动添加选手要上传的信息 具有选填或者必填的选项 必填则required为1
     * type类型应该是从active_vote_form的type里查询出来的
     * @param activeVoteForm
     * @return
     */

    @Override
    public int addActiveVoteForm(ActiveVoteForm activeVoteForm) {
        return activeVoteFormMapper.insert(activeVoteForm);
    }
}
